# ============================================================
# * Copyright © hk. 2022-2025. All rights reserved.
# * File name: CMakeLists.txt
# * Author   : 苏木
# * Date     : 2025-05-22
# * Version  : 
# * Description: cmake version 3.16.3
# ============================================================
## https://cmake.com.cn/cmake/help/latest/guide/tutorial/index.html
## https://cmake.org/cmake/help/latest/

# 指定 CMake 的最低版本要求
# --------------------------------------------------
cmake_minimum_required(VERSION 3.10)


# 设置项目名称和使用的编程语言
# --------------------------------------------------
project(SPROJECT C)


# 指定可执行程序和源文件
# --------------------------------------------------
add_executable(app_demo.out main.c)

# 存在性
# --------------------------------------------------
# DEFINED 如果指定名称的变量存在，则返回True。变量的值无关紧要，只测试存在性。这也可以用来检查是否定义了特定的环境变量
message(STATUS "==> DEFINED")
if(DEFINED MY_VAR)
    message(STATUS "defined MY_VAR")
else()
    message(STATUS "not defined MY_VAR")
endif()

if(DEFINED ENV{PATH}) # Checks for an environment variable
    message(STATUS "defined ENV{PATH}")
else()
    message(STATUS "not defined ENV{PATH}")
endif()
message("")

# COMMAND 测试指定名称的CMake命令、函数或宏是否存在。这对于在尝试使用某个东西之前，检查它是否定义。
# 		  对于CMake提供的命令，最好测试CMake版本，但是对于项目提供的函数和宏(参见第8章)，用命令来测试存在是非常有用的。

# POLICY  测试某一特定策略是否已知。策略名通常采用CMPxxxx的形式，其中xxxx部分总是一个四位数。

# TARGET  如果CMake目标已由add_executable()、add_library()或add_custom_target()定义，则返回True。
#         目标可以在任何目录中定义，这个测试在复杂的项目结构中特别有用，这些复杂的项目结构引入其他外部项目，
#         并且这些项目可能共享共同的依赖项(例如，这种if测试可以用于在尝试创建目标之前检查目标是否定义)。
